package com.ryder.petmatediarybackend.module.shop.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ryder.petmatediarybackend.module.shop.dto.CreateAppointmentDTO;
import com.ryder.petmatediarybackend.module.shop.entity.ShopAppointment;
import com.ryder.petmatediarybackend.module.shop.vo.AppointmentVO;

import java.util.List;

/**
 * 描述: 店铺预约表（疫苗需资质，禁止线上交易）(ShopAppointment)表服务接口
 * 
 * @author Ryder
 * @version 1.0
 * @since 1.0
 * 更新日期: 2025-10-31
 */
public interface ShopAppointmentService extends IService<ShopAppointment> {

    /**
     * 创建预约
     */
    AppointmentVO createAppointment(Long userId, CreateAppointmentDTO dto);

    /**
     * 获取我的预约列表
     */
    List<AppointmentVO> getMyAppointments(Long userId);

    /**
     * 取消预约
     */
    void cancelAppointment(Long userId, Long appointmentId, String reason);

    /**
     * 获取店铺的预约列表（店铺经营者）
     */
    List<AppointmentVO> getShopAppointments(Long shopId);

    /**
     * 确认预约（店铺经营者）
     */
    void confirmAppointment(Long shopId, Long appointmentId, String remark);

    /**
     * 拒绝预约（店铺经营者）
     */
    void rejectAppointment(Long shopId, Long appointmentId, String reason);

    /**
     * 完成预约（店铺经营者）
     */
    void completeAppointment(Long shopId, Long appointmentId);
}
